library(rjson)
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 3.3.2
## Loading tidyverse: ggplot2
## Loading tidyverse: tibble
## Loading tidyverse: tidyr
## Loading tidyverse: readr
## Loading tidyverse: purrr
## Loading tidyverse: dplyr
## Warning: package 'ggplot2' was built under R version 3.3.3
## Warning: package 'tidyr' was built under R version 3.3.3
## Warning: package 'readr' was built under R version 3.3.2
## Warning: package 'purrr' was built under R version 3.3.2
## Conflicts with tidy packages ----------------------------------------------
## filter(): dplyr, stats
## lag():    dplyr, stats
library(RCurl)
## Loading required package: bitops
## 
## Attaching package: 'RCurl'
## The following object is masked from 'package:tidyr':
## 
##     complete
library(RSocrata)
## Warning: package 'RSocrata' was built under R version 3.3.3
library(ggrepel)
## Warning: package 'ggrepel' was built under R version 3.3.3
creds = fromJSON(file = "credentials.json")
url = "https://data.colorado.gov/resource/yifv-9mje.json"
#url = "https://data.colorado.gov/resource/693w-2ir9.json"

data = read.socrata(url,creds$token)

library(ggmap)
## Warning: package 'ggmap' was built under R version 3.3.2
df = data %>% na.omit() %>% filter(subregion != 'Metro Average')
co.locations = df %>% select(subregion) %>% unique()
co.locations = paste(co.locations$subregion,', CO',sep='')

#lonLat = geocode(co.locations)
#lonLat$subregion = sub(", CO", '',co.locations)
#write.csv(lonLat,'subregion_lon_lat.csv',row.names=FALSE)
lonLat = read.csv('subregion_lon_lat.csv')
df$averagerent = round(as.numeric(df$averagerent),0)
#df$year = as.factor(df$year)

mergedDF = merge(df,lonLat,by='subregion')
annualDF = mergedDF %>% 
  filter(apartmenttype == 'All') %>% 
  group_by(subregion,lon,lat,year) %>%
  summarise(rent = round(mean(averagerent)),0) %>%
  arrange(year) %>% filter(year >= 2015)

colo_map = qmap("Colorado, United States",zoom = 7, source = "google",legend='topleft')
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=Colorado,+United+States&zoom=7&size=640x640&scale=2&maptype=terrain&language=en-EN&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Colorado,%20United%20States&sensor=false
## Warning: `panel.margin` is deprecated. Please use `panel.spacing` property
## instead
#colo_map = qmap("Colorado, United States",zoom = 7, source='stamen', maptype='toner',legend='topleft')
colo_map + geom_point(aes(x=lon, y=lat, col=rent),
                      data = annualDF, 
                      alpha = 0.9,
                      size=9) + scale_color_gradient(low="green", high="red") + 
  geom_label_repel(data=annualDF,aes(label=paste(subregion,"\n","$",rent)),size=2.5)

annualDF = mergedDF %>% 
  group_by(apartmenttype,subregion,lon,lat,year) %>%
  summarise(rent = round(mean(averagerent)),0) %>%
  arrange(year) %>% filter(year >= 2015)

#colo_map = qmap("Colorado, United States",zoom = 7, source = "google",legend='bottom')
colo_map = qmap("Colorado, United States",zoom = 7, source='stamen', maptype='toner',legend='bottom')
## Map from URL : http://maps.googleapis.com/maps/api/staticmap?center=Colorado,+United+States&zoom=7&size=640x640&scale=2&maptype=terrain&sensor=false
## Information from URL : http://maps.googleapis.com/maps/api/geocode/json?address=Colorado,%20United%20States&sensor=false
## Map from URL : http://tile.stamen.com/toner/7/25/47.png
## Map from URL : http://tile.stamen.com/toner/7/26/47.png
## Map from URL : http://tile.stamen.com/toner/7/27/47.png
## Map from URL : http://tile.stamen.com/toner/7/25/48.png
## Map from URL : http://tile.stamen.com/toner/7/26/48.png
## Map from URL : http://tile.stamen.com/toner/7/27/48.png
## Map from URL : http://tile.stamen.com/toner/7/25/49.png
## Map from URL : http://tile.stamen.com/toner/7/26/49.png
## Map from URL : http://tile.stamen.com/toner/7/27/49.png
## Warning: `panel.margin` is deprecated. Please use `panel.spacing` property
## instead
colo_map + geom_point(aes(x=lon, y=lat, col=rent),
                      data = annualDF, 
                      alpha = 0.9,
                      size=5) + scale_color_gradient(low="green", high="red") + 
  facet_wrap(~apartmenttype) + 
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        strip.background = element_blank(),
        panel.border=element_rect(fill=NA,size=2))

library(trelliscopejs)
library(rbokeh)
## Warning: package 'rbokeh' was built under R version 3.3.3
noQtrDF = df %>%
  group_by(apartmenttype,subregion,year) %>%
  summarise(averagerent = round(mean(averagerent),0))

noQtrDF$year = as.numeric(noQtrDF$year)
noQtrDF$apartmenttype = as.factor(noQtrDF$apartmenttype)
noQtrDF$subregion = as.factor(noQtrDF$subregion)

qplot(data=noQtrDF, x = year, y = averagerent,size=2) + 
  theme_bw() + 
  facet_trelliscope(~apartmenttype + subregion,nrow=2,ncol=2,self_contained=TRUE)
# by_subregion = noQtrDF %>%
#  group_by(subregion) %>%
#  nest()
# 
# by_subregion = by_subregion %>% mutate(
#   panel = map_plot(data,
#                    ~ figure(xlim = c(2000, 2015), ylim = c(300,2000)) %>%
#                      ly_points(year, averagerent, data = .x, hover = .x)
#                     ))
# 
# by_subregion %>%
#   trelliscope("Rent in Colorado",nrow=2,ncol=1,self_contained=TRUE)